package com.york.subject.domain.service;


import com.york.subject.common.entity.PageResult;
import com.york.subject.domain.entity.SubjectLikedBO;

/**
 * 题目点赞表 领域service
 *
 * @author York
 * @since 2024-08-10 00:53:45
 */
public interface SubjectLikedDomainService {

    /**
     * 添加 题目点赞表 信息
     */
    void add(SubjectLikedBO subjectLikedBO);

    /**
     * 更新 题目点赞表 信息
     */
    Boolean update(SubjectLikedBO subjectLikedBO);

    /**
     * 删除 题目点赞表 信息
     */
    Boolean delete(SubjectLikedBO subjectLikedBO);

    /**
     * 点赞状态
     * 因为要被redis当key来处理，所以都是String
     * @param subjectId 题目id
     * @param userId 用户username
     * @return 点赞状态
     */
    Boolean isLiked(String subjectId,  String userId);

    /**
     * 点赞数量
     * 因为要被redis当key来处理，所以都是String
     * @param subjectId
     * @return 点赞数量
     */
    Integer getLikedCount(String subjectId);

    /**
     * xxl-job同步点赞数据到数据库
     */
    void syncLiked();

    PageResult<SubjectLikedBO> getSubjectLikedPage(SubjectLikedBO subjectLikedBO);

}
